"""
购物：
        1.用户的账户里有钱
        2.用户可推一个空的购物车进商场
        3.开始购物，将自己想要的商品添加购物车
        4.打印购物小条

程序和数据流程梳理分析：
	购前：
		钱要有：money
		有足够商品：列表来存储list
		有购物车：列表list

	购中：
		是否有这个商品：
			有
				钱够不够：
					够：
						添加到购物车！
						钱减去商品价格！
						恭喜，购买成功！您的卡余额还剩xxx
					不够：
						穷鬼，钱不够！请到其他超市购买！
			没有：
				没有这个商品，别瞎弄！
	购后：
		输入Q，q: 退出：
		打印购物小条！
1.现在用户在进商场之前需要从10张优惠券中，随机抽取一张优惠券。
比如抽到一个空凋的8折优惠券，后面在购物的过程中，空凋就可以按照8折后的价格来购买。
2.优化购物小条的人性化打印。
	购物时间，卡余额，购物数量，购买总商品的价值。
3.添加退货功能。在购买途中，某个商品不要了，退回到购物架中！
"""
import datetime
import random
discount = random.randint(1,9)
money = int(input("请输入你的资金："))
store_list = ["苹果", "香蕉", "橙子", "西瓜"]
discount_produce = random.randint(0,len(store_list)-1)
discount_card = [{discount_produce:discount},1]
print(f"恭喜！你获得一张{store_list[discount_produce]}的{discount}折优惠卷！")
product_prices = {"苹果": 50, "香蕉": 30, "橙子": 40, "西瓜": 100}
shopping_cart = []  # 初始化购物车


while True:
    print("商品名称\t\t价格")
    for item in product_prices:
        if discount_card[1] == 1:
            prices = product_prices[item] if item not in store_list[discount_produce] else ''.join(str(product_prices[item] * discount * 0.1))+"(已优惠)"
        else:
            prices = product_prices[item]
        print(f"{item}\t\t￥{prices}")
    # 获取用户输入
    product = input("请输入要购买的商品名称（输入 Q/q 退出,输入 C/c 来移出购物车）>>")
    if product.lower() == 'q':
        break
    if product.lower().startswith('c'):

        if not shopping_cart:
            print("购物车为空，无法删除商品！")
            break
        print("===== 你的购物车 =====")
        for i, item in enumerate(shopping_cart):
            discount_tag = "(使用优惠)" if item['是否使用优惠'] else ""
            print(f"{i + 1}. {item['商品名称']} - ￥{item['价格']}{discount_tag}")
        choose = int(input("选择要移出购物车商品编号>>"))
        max_sign = len(shopping_cart)
        if 0 < choose <= max_sign:
            removed = shopping_cart.pop(choose)
            cash = removed['价格']
            # 如果使用优惠卷购买，则恢复此优惠卷
            if removed['是否使用优惠']:
                discount_card[1] = 1
                print(f"一张{removed['商品名称']}的优惠卷已退回！可重新使用！")
            money += cash
            print(f"已删除 {removed['商品名称']}，已退款￥{cash}，当前余额: ￥{money}")
        else:
            print(f"未知商品编号{choose},它不在你的购物车中的商品编号1-{max_sign}")
            break
        continue

    #  如果输入的商品在商品列表，则获取其价格并检查是否有足够的资金
    if product in store_list:
        if discount_card[1] == 1:
            price = product_prices[product] if product not in store_list[discount_produce] else product_prices[product] * discount * 0.1
        else:
            price = product_prices[product]

        # 根据资金情况，充足情况下加入购物车
        if money >= price:
            is_discounted = (product == store_list[discount_produce] and discount_card[1] == 1)
            shopping_cart.append({
                '商品名称': product,
                '价格': price,
                '是否使用优惠': is_discounted
            })

            # 标记已使用优惠卷
            if is_discounted:
                discount_card[1] = 0
            money -= price
            print(f"恭喜,{product}购买成功！您的卡余额还剩{money}元")
        else:
            print("穷鬼，钱不够！请到其他超市购买！")
    else:
        print("没有这个商品，别瞎弄！")

# 打印购物小条
print("\n===== 购物小条 ======")
print(f"购物时间：{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("购买商品：")
print("编号\t\t商品名称\t\t价格")
total = 0
i = 1
for item in shopping_cart:
    discount_tag = "(优惠)" if item['是否使用优惠'] else ""
    print(f"{i}\t\t\t{item['商品名称']}\t\t\t￥{item['价格']}{discount_tag}")
    total += item['价格']
    i += 1
print(f"商品总数：{len(shopping_cart)}件")
print(f"消费总额：￥{total}")
print(f"剩余余额：￥{money}")
print("===================")